2.09. Прочие фреймворки
Прочие фреймворки
MessagePack — это бинарный формат сериализации, который является альтернативой JSON. Он разработан для компактного и быстрого обмена данными между системами.
Данные кодируются в бинарном виде. Допустим, у нас есть JSON-объект:
{
"name": "Alice",
"age": 30,
"is_active": true
}
Он будет закодирован в бинарном виде:
83 A4 6E 61 6D 65 A5 41 6C 69 63 65 A3 61 67 65 1E A9 69 73 5F 61 63 74 69 76 65 C3
Это занимает меньше места, чем JSON, и быстрее для парсинга и передачи данных. Как можно заметить, уже и не человекочитаемо.
OpenAPI (Swagger) — это стандарт для описания RESTful API. Он предоставляет формальный способ документирования API, что упрощает взаимодействие между разработчиками и автоматизацию процессов.
OpenAPI предоставляет описание эндпоинтов (указываются URL, методы GET, POST, PUT, DELETE и параметры запроса), описание схемы данных (входных и выходных данных), что позволяет разработчикам понять, как использовать API.
А Swagger UI позволяет тестировать API прямо из браузера.
RESTful подразумевает, что приложение использует архитектурный стиль REST.
Примеры RESTful API:
GET /users- получить список пользователей.POST /users- создать нового пользователя.PUT /users/{id}- обновить пользователя с указанным ID.DELETE /users/{id}- удалить пользователя с указанным ID.
RSocket — это протокол для асинхронного обмена данными, который используется для реактивных систем. Использует бинарный формат (например, Protobuf или JSON) и применяется в чатах, биржах. Поддерживает четыре основных типа взаимодействий:
- Request-Response (запрос-ответ) - клиент отправляет запрос и получает один ответ.
- Fire-and-Forget (выстрелил и забыл) - клиент отправляет запрос без ожидания ответа.
- Request-Stream (запрос-поток) - клиент отправляет запрос и получает поток данных.
- Channel (канал) - двунаправленный обмен данными.
Есть ещё одна платформа, достойная внимания. Это не фреймворк.
IBM MQ (Message Queue) — это корпоративная платформа для асинхронного обмена сообщениями между приложениями, сервисами и системами. Сообщения хранятся в очередях до тех пор, пока не будут обработаны. Использует различные протоколы - JMS, AMQP, MQTT, и даже собственный протокол IBM MQ.
IBM MQ использует модель «производитель-потребитель» через промежуточное хранилище — очередь (queue). Производитель отправляет сообщение в очередь и продолжает работу, не дожидаясь ответа от потребителя.
Message Producer отправляет сообщения в очередь. Он может быть любым приложением или системой. Queue Manager управляет очередями и маршрутизацией сообщений.
Message Consumer получает сообщения из очереди и обрабатывает их согласно логике приложения. Очереди бывают:
- локальные очереди, которые хранят сообщения на одном сервере.
- удалённые очереди, которые пересылают сообщения между разными серверами.
IBM MQ широко используется в крупных организациях, таких как банки, страховые компании и телекоммуникационные компании. Требует лицензирования.
Service Mesh — это инфраструктура для управления взаимодействием между микросервисами. Она предоставляет такие функции, как маршрутизация, балансировка нагрузки, мониторинг и безопасность.
Основные компоненты:
- Sidecar-прокси : прокси-серверы, внедренные в каждый под (например, Envoy).
- Контроллер : управляет конфигурацией и политиками (например, Istio, Linkerd).
Sidecar-прокси — это дополнительный контейнер, который размещается в том же поде, что и основное приложение в Kubernetes. Он используется для выполнения вспомогательных задач, таких как маршрутизация трафика, балансировка нагрузки, мониторинг или шифрование. В Service Mesh (например, Istio) sidecar-прокси (обычно Envoy) автоматически внедряется в каждый под для управления взаимодействием между микросервисами. Jaeger — это система распределенной трассировки, созданная для анализа взаимодействия между микросервисами.
Zipkin — это еще одна система распределенной трассировки, аналогичная Jaeger. Она используется для анализа производительности и диагностики проблем в микросервисах.
Envoy — это высокопроизводительный прокси-сервер и коммуникационная шина для распределенных систем. Он часто используется как sidecar-прокси в архитектурах микросервисов.
Linkerd — это легковесный Service Mesh, разработанный для Kubernetes. Он фокусируется на простоте использования и производительности и позволяет автоматически добавлять прокси в поды, при этом обеспечивая шифрование трафика.
Istio — это Service Mesh, который предоставляет инструменты для управления трафиком, безопасности и наблюдаемости в микросервисной архитектуре.